home *** CD-ROM | disk | FTP | other *** search
- // SCRIPTING
- // IMDB (US) automated batch importing (use Editor to change options)
- //
- // Note(!): This script will take first found Movie title, which in some cases
- // will mean it will take the wrong movie title. However, this script will
- // save you a ton of time when importing info for a large list. Just correct
- // the falsely imported infos manually later. Be sure to make a backup of your
- // list beforehand.
-
- (****************************************************
- * Movie importation script for: *
- * IMDB (US), http://us.imdb.com *
- * *
- * (c) 2002-2004 Antoine Potten *
- * software@antp.be *
- * Contributors : *
- * Danny Falkov *
- * Kai Blankenhorn *
- * lboregard *
- * Ork <ork@everydayangels.net> *
- * Trekkie <Asimov@hotmail.com> *
- * Batch-import improvements made by Youri Heijnen *
- * *
- * For use with Ant Movie Catalog 3.4.0 *
- * www.antp.be/software/moviecatalog *
- * *
- * This program is free software; you can *
- * redistribute it and/or modify it under the *
- * terms of the GNU General Public License as *
- * published by the Free Software Foundation; *
- * either version 2 of the License, or (at your *
- * option) any later version. *
- ****************************************************)
-
- program IMDb;
- const
- // Set the following constants to True to import field, or False to skip field
- ImportURL = True;
- ImportOriginalTitle = True;
- ImportTranslatedTitle = True;
- LeaveOriginalTitle = True; // True will get Translated Title, yet Original Title field will remain same
- ImportYear = True;
- ImportRating = True;
- ImportPicture = True;
- ImportLargePicture = False; // If set to False small pic will be imported
- ImportDirector = True;
- ImportActors = True;
- ImportCountry = True;
- ImportCategory = True;
- ImportDescription = True;
- UseLongestDescription = False; // If set to False shortest description available will be imported, faster since taken from main page
- ImportComments = True;
- ImportLength = True;
- ImportLanguage = True;
- const
- ExternalPictures = False;
- { True: Pictures will be stored as external files in the folder of the
- catalog
- False: Pictures will be stored inside the catalog (only for .amc files) }
- ManualPictureSelect = False;
- { True: If no Title Match found a picture selection window appears
- False: Revert to IMDB picture }
- var
- MovieName: string;
- MovieURL: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- MovieURL: string;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- if pos('<title>IMDb', Page.Text) = 0 then
- begin
- AnalyzeMoviePage(Page)
- end
- else
- begin
- MovieURL := AddMoviesTitles(Page, '<b>Exact Matches</b>');
- if MovieURL = '' then
- MovieURL := AddMoviesTitles(Page, '<b>Partial Matches</b>');
- if MovieURL = '' then
- MovieURL := AddMoviesTitles(Page, '<b>Approximate Matches</b>');
- if MovieURL <> '' then
- AnalyzePage(MovieURL);
- end;
- Page.Free;
- end;
-
- function FindValue(BeginTag, EndTag: string; Page: TStringList; var LineNr: Integer; var Line: string): string;
- var
- BeginPos, EndPos: Integer;
- Value: string;
- begin
- Result := '';
- Value := '';
- BeginPos := Pos(BeginTag, Line);
- if BeginPos > 0 then
- begin
- BeginPos := BeginPos + Length(BeginTag);
- if BeginTag = EndTag then
- begin
- Delete(Line,1,BeginPos-1);
- BeginPos := 1;
- end;
- EndPos := pos(EndTag, Line);
- while ((EndPos = 0) and (LineNr < Page.Count-1 )) do
- begin
- Value := Value + copy(Line, BeginPos, Length(Line) - BeginPos);
- // Next Line
- BeginPos := 1;
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- if Value = '' then
- Exit;
- EndPos := Pos(EndTag, Line);
- end;
- Value := Value + copy(Line, BeginPos, EndPos - BeginPos);
- end;
- Result := Value;
- end;
-
- procedure AnalyzeMoviePage(Page: TStringList);
- var
- Line, Value, Value2, FullValue, OldOriginalTitle: string;
- LineNr, Desc, i: Integer;
- BeginPos, EndPos: Integer;
- OldTitleParts, AllTitles: TStringList;
- LongDescr: Boolean;
- begin
- LongDescr := UseLongestDescription;
- if (LongDescr) and (Pos('<a href="plotsummary">', Page.Text) = 0) then
- LongDescr := False;
-
- MovieURL := 'http://imdb.com/title/tt' + copy(Page.Text, pos('<a href="/title/tt',Page.Text)+19, 7);
-
- // URL
- if ImportURL then
- SetField(fieldURL, MovieURL);
-
- AllTitles := TStringList.Create;
-
- // Original Title & Year
- if (ImportOriginalTitle) or (ImportYear) then
- begin
- LineNr := FindLine('<title>', Page, 0);
- Line := Page.GetString(LineNr);
- if LineNr > -1 then
- begin
- BeginPos := pos('<title>', Line);
- if BeginPos > 0 then
- BeginPos := BeginPos + 7;
- EndPos := pos('(', Line);
- if EndPos = 0 then
- EndPos := Length(Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos - 1);
- HTMLDecode(Value);
- if ImportOriginalTitle then
- OldOriginalTitle := GetField(fieldOriginalTitle);
- if (ImportTranslatedTitle) and not (LeaveOriginalTitle) then
- SetField(fieldOriginalTitle, Value);
- BeginPos := pos('(', Line) + 1;
- if BeginPos > 0 then
- begin
- EndPos := Pos('/I', Line);
- if EndPos < BeginPos then
- EndPos := pos(')', Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- if ImportYear then
- SetField(fieldYear, Value);
- end;
- end;
- end;
-
- // Translated Title
- if ImportTranslatedTitle then
- begin
- OldTitleParts := TStringList.Create;
- // Tokenize OldOriginalTitle while removing certain chars/common words ("the", "of")
- Value := AnsiUpperCase(OldOriginalTitle);
- Value := StringReplace(StringReplace(Value, ',', ' '), ':', ' ');
- Value := StringReplace(StringReplace(Value, '(', ' '), ')', ' ');
- Value := StringReplace(StringReplace(Value, 'OF', ' '), 'THE', ' ');
- repeat
- Value := StringReplace(Value, ' ', ' ');
- until Pos(' ', Value) = 0;
- Value := StringReplace(Trim(Value), ' ', ',');
- // Value now contains the original title (comma-separated) that was filled in before running the script
- Value2 := '';
- for i := 1 to Length(Value) do
- begin
- if Pos(',', Copy(Value, i, 1)) = 0 then
- Value2 := Value2 + Copy(Value, i, 1);
- if (Pos(',', Copy(Value, i, 1)) = 1) or (i = Length(Value)) then
- begin
- OldTitleParts.Add(Value2); // put each comma-separated value from Value into a separate string in TitleParts
- Value2 := '';
- end;
- end;
- for i := 0 to OldTitleParts.Count - 1 do
- // Begin comparing title parts (from the title originally filled in by moviedb owner) with
- // the 'true' Original Title (extracted from IMDb) to see if it's a foreign title and needs a Translated Title
- begin
- if Pos(OldTitleParts.GetString(i), AnsiUpperCase(GetField(fieldOriginalTitle))) <= 0 then
- begin // no match, must be a foreign title
- LineNr := FindLine('Also Known As', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- if Pos('Also Known As', Line) > 0 then
- begin
- BeginPos := Pos('Also Known As', Line) + 26;
- Value := Copy(Line, BeginPos, Length(Line) - BeginPos - 4);
- Value := StringReplace(Value, '<br>', '/ ');
- HTMLDecode(Value);
- SetField(fieldTranslatedTitle, Trim(Value));
- end;
- end;
- Break;
- end;
- end;
- OldTitleParts.Free;
- end;
-
- // Rating
- if ImportRating then
- begin
- LineNr := FindLine('User Rating:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 4);
- if Pos('/10', Line) > 0 then
- begin
- BeginPos := pos('<b>', Line) + 3;
- Value := IntToStr(Round(StrToInt(StrGet(Line, BeginPos), 0) + (StrToInt(StrGet(Line, BeginPos + 2), 0) / 10)));
- SetField(fieldRating, Value);
- end;
- end;
- end;
-
- // Language
- LineNr := FindLine('Language:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- BeginPos := pos('/">', Line) + 3;
- EndPos := pos('</a>', Line);
- if EndPos = 0 then
- EndPos := Length(Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- if ImportLanguage then
- SetField(fieldLanguages, Value);
- end;
-
- if ImportPicture then
- GetMoviePicture(Value, Page, AllTitles);
- AllTitles.Free;
-
- // Director
- if ImportDirector then
- begin
- LineNr := FindLine('Directed by', Page, 0);
- if LineNr > -1 then
- begin
- FullValue := '';
- Line := Page.GetString(LineNr + 1);
- repeat
- BeginPos := pos('">', Line) + 2;
- EndPos := pos('</a>', Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- if (Value <> '(more)') and (Value <> '') then
- begin
- if FullValue <> '' then
- FullValue := FullValue + ', ';
- FullValue := FullValue + Value;
- end;
- Delete(Line, 1, EndPos);
- until Pos('</a>', Line) = 0;
- HTMLDecode(FullValue);
- SetField(fieldDirector, FullValue);
- end;
- end;
-
- // Actors
- if ImportActors then
- begin
- LineNr := FindLine('ast overview', Page, 0);
- if LineNr = -1 then
- LineNr := FindLine('redited cast', Page, 0);
- if LineNr > -1 then
- begin
- FullValue := '';
- Line := Page.GetString(LineNr);
- repeat
- BeginPos := Pos('<td valign="top">', Line);
- if BeginPos > 0 then
- begin
- Delete(Line, 1, BeginPos);
- Line := copy(Line, 25, Length(Line));
- BeginPos := pos('">', Line) + 2;
- EndPos := pos('</a>', Line);
- if EndPos = 0 then
- EndPos := Pos('</td>', Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- if (Value <> '(more)') and (Value <> '') then
- begin
- BeginPos := pos('.... </td><td valign="top">', Line);
- if BeginPos > 0 then
- begin
- EndPos := pos('</td></tr>', Line);
- BeginPos := BeginPos + 27;
- Value2 := copy(Line, BeginPos, EndPos - BeginPos);
- if Value2 <> '' then
- begin
- Value := Value + ' (as ' + Value2 + ')';
- end;
- end;
- if FullValue <> '' then
- FullValue := FullValue + ', ';
- FullValue := FullValue + Value;
- end;
- EndPos := Pos('</td></tr>', Line);
- Delete(Line, 1, EndPos);
- end else
- begin
- Line := '';
- end;
- until Line = '';
- HTMLDecode(FullValue);
- SetField(fieldActors, FullValue);
- end;
- end;
-
- // Country
- if ImportCountry then
- begin
- LineNr := FindLine('Country:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- BeginPos := pos('/">', Line) + 3;
- EndPos := pos('</a>', Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- HTMLDecode(Value);
- SetField(fieldCountry, Value);
- end;
- end;
-
- // Category
- if ImportCategory then
- begin
- LineNr := FindLine('Genre:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- BeginPos := pos('/">', Line) + 3;
- EndPos := pos('</a>', Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- HTMLDecode(Value);
- SetField(fieldCategory, Value);
- end;
- end;
-
- //Description
- if ImportDescription then
- begin
- LineNr := FindLine('Plot Summary:', Page, 0);
- if LineNr < 1 then
- LineNr := FindLine('Plot Outline:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('</b>', Line) + 5;
- EndPos := pos('<a href', Line);
- if EndPos < 1 then
- begin
- Line := Line + Page.GetString(LineNr+1);
- EndPos := pos('<br><br>', Line);
- if EndPos < 1 then
- EndPos := Length(Line);
- end;
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- HTMLDecode(Value);
- if UseLongestDescription then
- SetField(fieldDescription, GetDescriptions(MovieURL + 'plotsummary'))
- else
- SetField(fieldDescription, Value);
- end;
- end;
-
- // Comments
- if ImportComments then
- begin
- LineNr := FindLine('<b>Summary:</b>', Page, 0);
- if LineNr > -1 then
- begin
- Value := '';
- repeat
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- EndPos := Pos('</blockquote>', Line);
- if EndPos = 0 then
- EndPos := Length(Line)
- else
- EndPos := EndPos - 1;
- Value := Value + Copy(Line, 1, EndPos) + ' ';
- until Pos('</blockquote>', Line) > 0;
- HTMLDecode(Value);
- Value := StringReplace(Value, '<br>', #13#10);
- Value := StringReplace(Value, #13#10+' ', #13#10);
- SetField(fieldComments, Value);
- end;
- end;
-
- // Length
- if ImportLength then
- begin
- LineNr := FindLine('Runtime:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- EndPos := pos(' min', Line);
- if EndPos = 0 then
- EndPos := pos(' /', Line);
- if EndPos = 0 then
- EndPos := Length(Line);
- if Pos(':', Line) < EndPos then
- BeginPos := Pos(':', Line) + 1
- else
- BeginPos := 1;
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldLength, Value);
- end;
- end;
-
- DisplayResults;
- end;
-
- procedure GetMoviePicture(Language: string; Page, AllTitles: TStringList);
- var
- Line, Value, Value2, Aka, PictureAddress: string;
- AmazonPage: TStringList;
- FoundOnAmazon, PickTreeSelected, PictureAvailable: Boolean;
- TitleRef, ImgRef, NoImage: string;
- LineNr, BeginPos, EndPos, PickTreeCount, ParagraphIndex, Index, TitleLine, LastMatch: Integer;
- begin
- FoundOnAmazon := False;
-
- if ImportLargePicture then
- begin
- // Find Alternate Titles for Movies which are not in English
- Aka := '';
- if Language <> 'English' Then
- begin
- LineNr:= FindLine('Also Known As',Page,0);
- EndPos:=0;
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- repeat
- Aka:=FindValue('<br>','<br>',Page,LineNr,Line);
- if Aka <> '' then
- begin
- BeginPos:=1;
- EndPos:=Pos('(',Line);
- if EndPos = 0 then
- EndPos := Length(Aka);
- Value := copy(Aka, BeginPos, EndPos - BeginPos - 1);
- Value:=TransFormIMDBTitle(Value);
- AllTitles.Add(Value);
- end;
- until (Pos('Runtime',Line) > 0) or (Pos('MPAA',Line) > 0 );
- end;
- end;
-
- TitleRef:='dvd>';
- ImgRef:='dvd><img';
- NoImage:='/icons/dvd-no-image.gif';
- LineNr := FindLine('title="DVD available at Amazon.com"', Page, 0);
- if LineNr = -1 then
- begin
- LineNr := FindLine('title="VHS available at Amazon.com"', Page, 0);
- if LineNr > -1 then
- begin
- TitleRef:='video>';
- ImgRef:='video><img';
- NoImage:='/icons/video-no-image.gif';
- end;
- end;
-
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- if(TitleRef='dvd>') then
- begin
- EndPos := pos('title="DVD', Line);
- BeginPos := pos('title="VHS', Line);
- while (BeginPos > 0) and (BeginPos<EndPos) do
- begin
- Delete(Line, 1, BeginPos+1);
- BeginPos := pos('title="VHS', Line);
- end;
- end;
- BeginPos := Pos('href="', Line) + 5;
- Delete(Line, 1, BeginPos);
- EndPos := Pos('"', Line);
- Value := Copy(Line, 1, EndPos - 1);
- AmazonPage := TStringList.Create;
- AmazonPage.Text := GetPage('http://us.imdb.com' + Value);
-
- // Original Title
- Value2 := AllTitles.GetString(0);
- Value2 := TransFormIMDBTitle(Value2);
-
- PickTreeClear;
- PickTreeCount := 0;
- PickTreeAdd('Available Titles for matching a picture to: ' + Value2, '');
-
- ParagraphIndex := 1;
- LineNr := 0;
- LastMatch := -1;
- TitleLine := -1;
- repeat
- LineNr := FindLine('<b>'+IntToStr(ParagraphIndex)+'.', AmazonPage, LineNr);
-
- if LineNr > -1 then
- begin
- TitleLine:=LineNr;
- Value:='';
- PictureAvailable:=False;
- repeat
- TitleLine:=TitleLine +1;
- Line:= AmazonPage.GetString(TitleLine);
- BeginPos:=0;
- if Pos(TitleRef,Line) > 0 then
- begin
- if Pos(ImgRef,Line) = 0 then
- begin
- for Index:=0 to AllTitles.Count -1 do
- begin
- Value2:=AllTitles.GetString(Index);
- BeginPos:=Pos(Value2,Line);
- if BeginPos > 0 then
- Break;
- end;
- // Match not found
- if BeginPos = 0 then
- begin
- BeginPos:=Pos(TitleRef,Line)+Length(TitleRef);
- EndPos:=Pos('</a>',Line);
- Value:=Copy(Line,BeginPos,EndPos-BeginPos);
- end;
- end
- else
- begin
- PictureAvailable:=(Pos(NoImage,Line) = 0);
- PictureAddress:=IntToStr(TitleLine);
- end;
- end;
- if BeginPos > 0 then
- Break;
- until (Pos('</table>',Line ) > 0);
-
- // Try to Find a Title Match
- if Pos(Value2,Line) > 0 then
- begin
- // Compare Current Title to Original
- BeginPos := Pos(TitleRef, Line) + Length(TitleRef) -1;
- Delete(Line, 1, BeginPos);
- EndPos:= Pos('(',Line);
- if EndPos = 0 Then
- EndPos := Pos('</a>', Line);
- Value := Copy(Line, 1, EndPos - 1);
- Value:= Trim(Value);
- if Value = Value2 then
- begin
- if PictureAvailable then
- LastMatch:=LineNr;
- //Break
- end;
- end;
- if PictureAvailable then
- begin
- PickTreeAdd(Value,PictureAddress);
- PickTreeCount:=PickTreeCount+1;
- end;
- end;
- ParagraphIndex:=ParagraphIndex+1;
- until (LineNr = -1);
- LineNr:=LastMatch;
- if (LineNr = -1) then
- begin
- // Handle Amazon Page Redirection(s)
- LineNr:= FindLine('You clicked on this item',AmazonPage,0);
- if (LineNr = -1) then
- LineNr:=FindLine('Customers who bought',AmazonPage,0);
- // Display the Picture Selection Window
- if (LineNr = -1) and ManualPictureSelect and (PickTreeCount > 0) then
- begin
- PickTreeSelected:=PickTreeExec(PictureAddress);
- if PickTreeSelected then
- LineNr:=StrToInt(PictureAddress,0);
- end;
- if (LineNr > -1 ) then
- begin
- LineNr := FindLine('src="http://images.amazon.com/images/P/',AmazonPage, LineNr);
- if not PickTreeSelected then
- TitleLine:= FindLine('/exec/obidos/ASIN/',AmazonPage, 0);
- if (LineNr > TitleLine) then
- LineNr:=-1
- if LineNr > -1 then
- begin
- Line := AmazonPage.GetString(LineNr);
- BeginPos := Pos('src="http://images.amazon.com/images/P/', Line) + 4;
- Delete(Line, 1, BeginPos);
- EndPos := Pos('"', Line);
- Value := Copy(Line, 1, EndPos - 1);
- Value := StringReplace(Value, 'TZZZZZZZ', 'LZZZZZZZ');
- Value := StringReplace(Value, 'THUMBZZZ', 'LZZZZZZZ');
- GetPicture(Value, ExternalPictures);
- FoundOnAmazon := True;
- end;
- end;
- end
- else
- begin
- LineNr := FindLine('http://images.amazon.com/images/P/', AmazonPage, LineNr);
- if LineNr < TitleLine then
- begin
- Line := AmazonPage.GetString(LineNr);
- BeginPos := Pos('src="', Line) + 4;
- Delete(Line, 1, BeginPos);
- EndPos := Pos('"', Line);
- Value := Copy(Line, 1, EndPos - 1);
- Value := StringReplace(Value, 'THUMBZZZ', 'LZZZZZZZ');
- GetPicture(Value, ExternalPictures);
- FoundOnAmazon := True;
- end;
- end;
- AmazonPage.Free;
- end;
- end; // if ImportLargePicture
-
- if not FoundOnAmazon then
- begin
- { not found on Amazon, so taking what's available directly on IMDB.
- if we are lucky, a picture from amazon but directly linked in the page }
- LineNr := FindLine('<img alt="cover" align="left" src="http://ia.imdb.com/media/imdb/', Page, 0);
- if LineNr < 0 then
- LineNr := FindLine('<img alt="cover" align="left" src="http://posters.imdb.com/', Page, 0);
- if LineNr < 0 then
- LineNr := FindLine('<img alt="cover" align="left" src="http://images.amazon.com/', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('src="', Line) + 4;
- Delete(Line, 1, BeginPos);
- EndPos := pos('"', Line);
- Value := copy(Line, 1, EndPos - 1);
- Value := StringReplace(Value, 'MZZZZZZZ', 'LZZZZZZZ'); // change URL to get the Large instead of Small image
- GetPicture(Value, ExternalPictures);
- end;
- end;
- end;
-
- function TransformIMDBTitle(Title: string): string;
- var
- BeginPos, EndPos: Integer;
- Value: string;
- Words: array of string;
- Articles: array of string;
- Replace,Original: string;
- Index, CommaCount: Integer;
- Begin
- // Original Title
- Result:=Title;
-
- Setarraylength(Words,11);
- Words[0]:=' In ';
- Words[1]:=' On ';
- Words[2]:=' Of ';
- Words[3]:=' As ';
- Words[4]:=' The ';
- Words[5]:=' At ';
- Words[6]:=' And A ';
- Words[7]:=' And ';
- Words[8]:=' An ';
- Words[9]:=' To ';
- Words[10]:=' For ';
-
- SetArrayLength(Articles,35);
- Articles[0]:=' The';
- Articles[1]:=' a';
- Articles[2]:=' An';
- Articles[3]:=' Le';
- Articles[4]:=' L''';
- Articles[5]:=' Les';
- Articles[6]:=' Der';
- Articles[7]:=' Das';
- Articles[8]:=' Die';
- Articles[9]:=' Des';
- Articles[10]:=' Dem';
- Articles[11]:=' Den';
- Articles[12]:=' Ein';
- Articles[13]:=' Eine';
- Articles[14]:=' Einen';
- Articles[15]:=' Einer';
- Articles[16]:=' Eines';
- Articles[17]:=' Einem';
- Articles[18]:=' Il';
- Articles[19]:=' Lo';
- Articles[20]:=' La';
- Articles[21]:=' I';
- Articles[22]:=' Gli';
- Articles[23]:=' Le';
- Articles[24]:=' Uno';
- Articles[25]:=' Una';
- Articles[26]:=' Un''';
- Articles[27]:=' O';
- Articles[28]:=' Os';
- Articles[29]:=' As';
- Articles[30]:=' El';
- Articles[31]:=' Los';
- Articles[32]:=' Las';
- Articles[33]:=' Unos';
- Articles[34]:=' Unas';
-
- // Count the Comma in The Title
- CommaCount := 0;
- EndPos := 0;
- Value := Title;
- repeat
- BeginPos := Pos(',', Value);
- if BeginPos > 0 then
- begin
- Delete(Value, 1, BeginPos);
- CommaCount := CommaCount + 1;
- EndPos := EndPos + BeginPos;
- end;
- until( Pos(',',Value) = 0);
-
- // Compare the Article to a list of known ones
- for Index := 0 to 34 do
- begin
- if Pos(Articles[Index], Value) <> 0 then
- begin
- CommaCount := 1;
- BeginPos := EndPos;
- Break;
- end;
- end;
-
- if (BeginPos > 0) and (CommaCount = 1) then
- begin
- Value := Copy(Title, BeginPos + 1, Length(Title));
- Value := Trim(Value);
- Result := Value + ' ' + Copy(Title, 1, BeginPos - 1);
- end;
-
- BeginPos := Pos(': ', Result);
- if BeginPos > 0 then
- Result := StringReplace(Result, ': ', ' - ');
-
- Result := AnsiMixedCase(Result, ' ');
-
- for Index := 0 to 10 do
- begin
- if Pos(Words[Index],Result) <> 0 then
- begin
- Original := Words[Index];
- Replace := AnsiLowerCase(Original);
- Result := StringReplace(Result, Original, Replace);
- end;
- end;
-
- Result := StringReplace(Result, ' - the ', ' - The ');
- Result := Trim(Result);
- end;
-
- function GetDescriptions(Address: string): string;
- var
- Line, Value: string;
- LineNr: Integer;
- BeginPos, EndPos,Longest: Integer;
- Page: TStringList;
- begin
- Result := '';
- Longest := 0;
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- LineNr := FindLine('<p class="plotpar">', Page, 0);
- while LineNr > -1 do
- begin
- Value := '';
- repeat
- Line := Page.GetString(LineNr);
- BeginPos := pos('"plotpar">', Line);
- if BeginPos > 0 then
- BeginPos := BeginPos + 10
- else
- BeginPos := 1;
- EndPos := pos('</p>', Line);
- if EndPos < 1 then
- EndPos := Length(Line) + 1;
- if Value <> '' then
- Value := Value + ' ';
- Value := Value + copy(Line, BeginPos, EndPos - BeginPos);
- LineNr := LineNr + 1;
- until (pos('</p>', Line) > 0) or (LineNr = Page.Count);
- HTMLDecode(Value);
- PickListAdd(Value);
-
- if Length(Value) > Longest then
- begin
- Result := Value;
- Longest := Length(Value);
- end;
-
- LineNr := FindLine('<p class="plotpar">', Page, LineNr);
- end;
- Page.Free;
- end;
-
- function AddMoviesTitles(Page: TStringList; Tag: string): string;
- var
- Line: string;
- LineNr: Integer;
- StartPos: Integer;
- begin
- Result := '';
- LineNr := FindLine(tag, Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- HTMLRemoveTags(Line);
- PickTreeAdd(Trim(Line), '');
- LineNr := LineNr + 5;
- Line := Page.GetString(LineNr);
- StartPos := pos('href="', Line) + 5;
- Delete(Line, 1, StartPos);
- Result := Copy(Line, 1, pos('">', Line) - 1);
- end;
- end;
-
- begin
- if CheckVersion(3,4,0) then
- begin
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if (MovieName = '') then
- if not Input('IMDb Import', 'Enter the title of the movie:', MovieName) then
- Exit;
- AnalyzePage('http://us.imdb.com/Tsearch?title='+UrlEncode(MovieName));
- end else
- ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
- end.
-